<?php

/**
 * Controller para autenticação de usuário no sistema
 *
 * @author Igor Rocha <igortice@gmail.com>
 * @copyright Copyright (c) 2011, Igor Rocha
 */
class AuthController extends BaseController
{

    /**
     * Método com configuração de layout
     */
    public function init()
    {
        $this->_helper->layout()->setLayout('login');
        parent::init();
    }

    /**
     * Action com utilização de Zend_Form
     */
    public function loginAction()
    {
        $this->view->form = new Form_Login();
    }

    /**
     * Action para verificação de identificação
     */
    public function checkAction()
    {
        $authAdapter = new AuthAdapter(
                $this->getPostTrimTags('username'),
                $this->getPostTrimTags('password')
        );

        $result = Zend_Auth::getInstance()->authenticate($authAdapter);


        switch ($result->getCode()) {
            case Zend_Auth_Result::FAILURE:
                $this->setErrorMessage('Não foi possível se conectar ao Servidor');
                $this->redirectLogin();
                break;

            case Zend_Auth_Result::FAILURE_CREDENTIAL_INVALID:
                $this->setErrorMessage('Login ou Senha inválidos. Por favor, tente novamente.');
                $this->redirectLogin();
                break;

            case Zend_Auth_Result::SUCCESS:
                $this->setSuccessMessage('Login efetuado com sucesso.');
                $this->redirectHome();
                break;

            default:
                $this->setErrorMessage('Ocorreu um erro. Por favor, tente novamente.');
                $this->redirectLogin();
                break;
        }
    }

    /**
     * Action para logout do sistema
     */
    public function logoutAction()
    {
        $this->setSuccessMessage('Logout realizado com sucesso.');
        $alfrescoLoginObj = new Alfresco_Rest_Login($this->getUrlAlfresco());
        $alfrescoLoginObj->logout($this->getTicket());

        Zend_Auth::getInstance()->clearIdentity();

        $this->redirectLogin();
    }

}
